Processors execute instructions to complete useful tasks. Modern processors use processor pipelines. When an instruction is loaded into a processor pipeline for execution, that instruction may not actually be executed by the processor until other instructions that are already in the pipeline are executed. In some examples, processors that execute instructions attempt to optimize those instructions prior to placing those instructions in the pipeline in an attempt to operate more efficiently. Such optimizations potentially result in instructions being executed out of their originally intended order. For example, the processor will, in some examples, speculatively execute portions of the code prior to those code portions being necessary, in an effort to optimize the performance of the processor.
The figures are not to scale. Wherever possible, the same reference numbers will be used throughout the drawing(s) and accompanying written description to refer to the same or like parts.